No unique bean of type [javax.persistence.EntityManager] is defined

Posted by sebajb on Stack Overflow See other posts from Stack Overflow or by sebajb
Published on 2010-06-02T20:11:08Z Indexed on 2010/06/02 20:14 UTC
Read the original article Hit count: 232

Filed under:
|
|
|

I am using JUnit 4 to test Dao Access with Spring (annotations) and JPA (hibernate). The datasource is configured through JNDI(Weblogic) with an ORacle(Backend). This persistence is configured with just the name and a RESOURCE_LOCAL transaction-type

The application context file contains notations for annotations, JPA config, transactions, and default package and configuration for annotation detection. I am using Junit4 like so:


ApplicationContext

<bean id="entityManagerFactory"  
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  
     <property name="persistenceUnitName" value="workRequest"/>  
     <property name="dataSource" ref="dataSource" />  
     <property name="jpaVendorAdapter">  
         <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">  
             <property name="databasePlatform" value="${database.target}"/>  
             <property name="showSql" value="${database.showSql}" />  
             <property name="generateDdl" value="${database.generateDdl}" />  
         </bean>  
     </property>  
</bean>  

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>workRequest</value>
    </property>
    <property name="jndiEnvironment">
        <props>
            <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
            <prop key="java.naming.provider.url">t3://localhost:7001</prop>
        </props>
    </property>
</bean>

<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />


JUnit TestCase
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
public class AssignmentDaoTest {
private AssignmentDao assignmentDao;
@Test
public void readAll() {
assertNotNull("assignmentDao cannot be null", assignmentDao);
List assignments = assignmentDao.findAll();
assertNotNull("There are no assignments yet", assignments);
}
}


regardless of what changes I make I get:

No unique bean of type [javax.persistence.EntityManager] is defined

Any hint on what this could be. I am running the tests inside eclipse.

© Stack Overflow or respective owner

Related posts about hibernate

Related posts about spring